The present embodiments relate to human-machine interface (HMI) applications. Modern automation systems combine information technology with industrial machinery to assist the design, implementation, and monitoring of control systems. A HMI displays machinery data to a human operator and receives commands from the operator to control the machinery and process performed by the machinery. HMI devices may be considered the “windows” to very complex industrial processes.
HMI applications for operating an HMI device are developed with an engineering system. Engineering systems allow the application developer to create HMI applications without exposing details of the underlying architecture to the application developer. The HMI screen includes different elements placed by the application developer. For each of these elements, the application developer creates a list of actions to be executed each cycle. The list is created from elements with predefined actions or a list of possible actions for selection. These actions may be for changing values (e.g. SetValue) of variables (Tags) or changing an appearance and properties of the elements themselves (e.g. color, X-position, Y-position). An HMI program loop of the HMI application is created from the selected elements and corresponding actions.
The engineering system or the runtime process for the HMI device compiles the input from the application developer to implement the HMI application. The runtime process is performed on the HMI device, which is implemented with a single-core central processing unit (CPU).
The HMI program loop controls execution of the actions. A single thread traverses the list of elements of the screen and executes the list of actions for each element. The scheduling is left to the operating system. The operating system may schedule other threads, such as associated with communications, into a separate processing unit. However, the execution of the HMI program loop with the elements and actions is typically serialized in a round-robin fashion on every execution cycle. This serialization creates a bottleneck that affects response time, rendering, and missed communication deadlines with external devices.